Dynamic Resource এবং Static Resource হল WPF (Windows Presentation Foundation)-এর দুটি প্রধান কনসেপ্ট যা UI উপাদানগুলির স্টাইল, টেমপ্লেট, এবং বৈশিষ্ট্যগুলিকে ব্যবস্থাপনা করার জন্য ব্যবহৃত হয়। এই দুটি রিসোর্সের মধ্যে প্রধান পার্থক্য হল, Dynamic Resource এমন একটি রিসোর্স যেটি রানটাইমে পরিবর্তিত হতে পারে, যেখানে Static Resource এমন একটি রিসোর্স যা কম্পাইল টাইমে নির্ধারিত এবং পরিবর্তনযোগ্য নয়।
এগুলোর সাহায্যে অ্যাপ্লিকেশনটির UI কাস্টমাইজ এবং রিইউজ করা সহজ হয়। চলুন, এই দুটি রিসোর্স কীভাবে ব্যবহার করা যায়, তা বিস্তারিতভাবে দেখি।
Static Resource হল এমন একটি রিসোর্স যেটি কম্পাইল টাইমে একবার লোড হয়ে যায় এবং পরে সেটি পরিবর্তিত হয় না। এটি XAML-এ ব্যবহার করা হয় যখন আপনি UI উপাদানের জন্য নির্দিষ্ট এক রিসোর্স বা বৈশিষ্ট্য ব্যবহার করতে চান, যা কেবল একবার নির্ধারিত হয় এবং পরবর্তীতে পরিবর্তিত হয় না।
<Window x:Class="StaticResourceExample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Static Resource Example" Height="350" Width="525">
<Window.Resources>
<!-- Static Resource Definition -->
<SolidColorBrush x:Key="ButtonBackgroundColor" Color="Blue"/>
</Window.Resources>
<Grid>
<Button Content="Click Me" Background="{StaticResource ButtonBackgroundColor}" Width="100" Height="50"/>
</Grid>
</Window>
এখানে:
Background
প্রপার্টিতে ব্যবহার করা হয়েছে।Dynamic Resource হল এমন একটি রিসোর্স যেটি রানটাইমে পরিবর্তন হতে পারে। এটি এমন ক্ষেত্রে ব্যবহৃত হয় যখন UI উপাদানগুলির বৈশিষ্ট্যগুলি চলমান অ্যাপ্লিকেশনের পরিবেশ বা ব্যবহারকারীর ইন্টারঅ্যাকশনের ভিত্তিতে পরিবর্তিত হতে পারে। Dynamic Resource সাধারণত ResourceDictionary-এ ব্যবহৃত হয়, কিন্তু এটি Static Resource এর মতো কম্পাইল টাইমে নির্ধারিত হয় না এবং এটিকে পরিবর্তন করা যায়।
<Window x:Class="DynamicResourceExample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Dynamic Resource Example" Height="350" Width="525">
<Window.Resources>
<!-- Dynamic Resource Definition -->
<SolidColorBrush x:Key="ButtonBackgroundColor" Color="Green"/>
</Window.Resources>
<Grid>
<Button Content="Click Me" Background="{DynamicResource ButtonBackgroundColor}" Width="100" Height="50"/>
</Grid>
</Window>
এখানে:
Background
প্রপার্টিতে DynamicResource হিসেবে ব্যবহার করা হয়েছে।বৈশিষ্ট্য | Static Resource | Dynamic Resource |
---|---|---|
লোড টাইম | কম্পাইল টাইমে একবার লোড হয়। | রানটাইমে লোড হয় এবং পরিবর্তিত হতে পারে। |
পরিবর্তনযোগ্যতা | পরিবর্তনযোগ্য নয়। | পরিবর্তনযোগ্য এবং রানটাইমে পরিবর্তন করা যায়। |
কার্যকরী ক্ষেত্রে | UI স্টাইল বা সেটিংস যা পরিবর্তিত হয় না। | UI বৈশিষ্ট্য যা রানটাইমে পরিবর্তিত হতে পারে। |
কোডে ব্যবহার | {StaticResource ResourceName} | {DynamicResource ResourceName} |
Dynamic Resource এর একটি বিশেষ সুবিধা হলো আপনি একাধিক রিসোর্স ব্যবহার করে অ্যাপ্লিকেশনের UI থিম বা লুক পরিবর্তন করতে পারেন।
ধরা যাক, আপনি একটি থিম পরিবর্তন করার জন্য দুটি রঙের স্কিম ব্যবহার করতে চান: একটি ডার্ক থিম এবং একটি লাইট থিম।
<Window x:Class="ThemeChangeExample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Theme Change Example" Height="350" Width="525">
<Window.Resources>
<!-- Light Theme -->
<SolidColorBrush x:Key="ButtonBackgroundColor" Color="LightGray" />
<!-- Dark Theme -->
<SolidColorBrush x:Key="ButtonBackgroundColorDark" Color="DarkGray" />
</Window.Resources>
<Grid>
<Button Content="Change Theme" Background="{DynamicResource ButtonBackgroundColor}" Width="200" Height="50"/>
</Grid>
</Window>
এখন, আপনি Dynamic Resource ব্যবহার করে Button এর ব্যাকগ্রাউন্ড রঙ পরিবর্তন করতে পারেন। যেহেতু এটি DynamicResource, থিম পরিবর্তনের সময় রঙ পরিবর্তিত হবে।
common.read_more